class Nodo:
    red, black = "red", "black"
    def __init__(self, pai=None, dado=None, esquerdo=None, direito=None, cor=black):
        self.__pai = pai
        self.__dado = dado
        self.__esquerdo = esquerdo
        self.__direito = direito
        self.__cor = cor

    def pai(self):
        return self.__pai


    def dado(self):
        return self.__dado


    def esq(self):
        return self.__esquerdo


    def dir(self):
        return self.__direito


    def set_pai(self, value):
        self.__pai = value


    def set_dado(self, value):
        self.__dado = value


    def set_esq(self, value):
        self.__esquerdo = value


    def set_dir(self, value):
        self.__direito = value
       
        
    def cor(self):
        return self.__cor


    def set_cor(self, value):
        self.__cor = value
        
    def is_filho_esq(self):
        if(self.pai() != None):
            return self == self.pai().esq()
        return False
    
    def __str__(self):
        pos = "direito"
        if(self.is_filho_esq()):
            pos = "esquerdo"
        return "(" + str(self.dado().getNumero()) + " : " + self.cor() + ") " + pos
    
    def visit (self,node,depth):
        if(node.dado() <> None ):
            print " ( " + str(node.dado()) + " : " + node.cor() + " : " + str(depth) + " ), " , 
            print str(node.dado().getNumero())

    